{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 6支持向量机\n",
    "上来就要啃硬骨头，支持向量机，机器学习算法的巅峰之作。\n",
    "\n",
    "**SVM的一般流程**\n",
    "1. 收集数据\n",
    "2. 准备数据：数值型数据\n",
    "3. 分析数据：有助于可视化分隔超平面\n",
    "4. 训练算法：SVM的大部分时间都源自训练，该过程主要实现两个参数的参数调优\n",
    "5. 测试算法\n",
    "6. 使用算法：可用于所有分类问题。对于多分类问题需要修改代码"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6.1SMO简化版\n",
    "简化了选择变量的步骤，直接遍历+随机分别选取两个alpha。\n",
    "\n",
    "1996年，John Platt发布了SMO（Sequential Minimal Optimization）算法用于训练SVM。\n",
    "目标：求出alpha和b，计算权重向量w得到分隔超平面。\n",
    "工作原理：每次循环中选择两个alpha进行优化处理。一旦找到满足两个条件（条件一，两个alpha必须在间隔边界之外；条件二，两个alpha还没有进行过区间化处理或者不在边界上）的alpha，就增大其中一个，减小另一个。\n",
    "\n",
    "参考阅读：\n",
    "1. [random.uniform](https://docs.python.org/3/library/random.html#real-valued-distributions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "def loadDataSet(filename):\n",
    "    dataMat, labelMat = [], []\n",
    "    fr = open(filename)\n",
    "    for line in fr.readlines():\n",
    "        lineArr = line.strip().split('\\t')\n",
    "        dataMat.append([float(lineArr[0]), float(lineArr[1])])\n",
    "        labelMat.append(float(lineArr[2]))\n",
    "    return dataMat, labelMat\n",
    "\n",
    "def selectJrand(i, m):\n",
    "    j = i\n",
    "    while (j==i):\n",
    "        j = int(random.uniform(0,m))\n",
    "    return j\n",
    "\n",
    "def clipAlpha(aj, H, L):\n",
    "    if aj < L:aj=L\n",
    "    elif aj > H:aj = H\n",
    "    return aj"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "算法流程：\n",
    "创建一个alpha向量并将其初始化为0向量\n",
    "当迭代次数小于最大迭代次数时（外循环）\n",
    "    对数据集中的每个数据向量（内循环）：\n",
    "        如果该数据向量可以被优化：\n",
    "            随机选择另外一个数据向量\n",
    "            同时优化这两个向量\n",
    "            如果两个向量都不能被优化，退出内循环\n",
    "    如果所有向量没都被优化，增加迭代数目，继续下一次循环\n",
    "\n",
    "参考阅读：\n",
    "1. [np.array()和np.mat()区别](http://www.mamicode.com/info-detail-2664838.html)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "iter:0 i: 0, pairs changed 1\n",
      "L==H\n",
      "j not moving enough\n",
      "L==H\n",
      "L==H\n",
      "L==H\n",
      "iter:0 i: 17, pairs changed 2\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "L==H\n",
      "L==H\n",
      "L==H\n",
      "L==H\n",
      "L==H\n",
      "j not moving enough\n",
      "L==H\n",
      "iteration number: 0\n",
      "iter:0 i: 0, pairs changed 1\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "L==H\n",
      "L==H\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "L==H\n",
      "iteration number: 0\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "L==H\n",
      "iter:0 i: 46, pairs changed 2\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "iter:0 i: 97, pairs changed 3\n",
      "iteration number: 0\n",
      "iter:0 i: 0, pairs changed 1\n",
      "j not moving enough\n",
      "iter:0 i: 15, pairs changed 2\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "iter:0 i: 23, pairs changed 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 52, pairs changed 4\n",
      "iter:0 i: 54, pairs changed 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "L==H\n",
      "L==H\n",
      "L==H\n",
      "L==H\n",
      "L==H\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "L==H\n",
      "L==H\n",
      "j not moving enough\n",
      "L==H\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "L==H\n",
      "iter:0 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "iter:0 i: 57, pairs changed 2\n",
      "j not moving enough\n",
      "iter:0 i: 69, pairs changed 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 25, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 46, pairs changed 2\n",
      "iter:0 i: 52, pairs changed 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 79, pairs changed 4\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 54, pairs changed 1\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 17, pairs changed 1\n",
      "iter:0 i: 23, pairs changed 2\n",
      "iter:0 i: 25, pairs changed 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 54, pairs changed 2\n",
      "L==H\n",
      "iter:0 i: 57, pairs changed 3\n",
      "j not moving enough\n",
      "iter:0 i: 69, pairs changed 4\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 15, pairs changed 1\n",
      "iter:0 i: 17, pairs changed 2\n",
      "j not moving enough\n",
      "iter:0 i: 25, pairs changed 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 55, pairs changed 4\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "L==H\n",
      "L==H\n",
      "iter:0 i: 15, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 69, pairs changed 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 55, pairs changed 1\n",
      "j not moving enough\n",
      "iter:0 i: 62, pairs changed 2\n",
      "iter:0 i: 69, pairs changed 3\n",
      "iter:0 i: 70, pairs changed 4\n",
      "L==H\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "L==H\n",
      "L==H\n",
      "iteration number: 0\n",
      "iter:0 i: 0, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "L==H\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:1 i: 30, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:1 i: 55, pairs changed 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:1 i: 97, pairs changed 3\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "iter:1 i: 0, pairs changed 1\n",
      "L==H\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:1 i: 36, pairs changed 2\n",
      "iter:1 i: 45, pairs changed 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:1 i: 54, pairs changed 4\n",
      "j not moving enough\n",
      "iter:1 i: 57, pairs changed 5\n",
      "j not moving enough\n",
      "iter:1 i: 69, pairs changed 6\n",
      "iter:1 i: 95, pairs changed 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "iter:0 i: 8, pairs changed 1\n",
      "iter:0 i: 17, pairs changed 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 43, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "iter:0 i: 55, pairs changed 2\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:1 i: 45, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "iter:1 i: 62, pairs changed 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "iter:1 i: 17, pairs changed 1\n",
      "iter:1 i: 23, pairs changed 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:1 i: 52, pairs changed 3\n",
      "iter:1 i: 54, pairs changed 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "iter:3 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:3 i: 97, pairs changed 2\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "iter:0 i: 29, pairs changed 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 54, pairs changed 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "iter:0 i: 17, pairs changed 1\n",
      "iter:0 i: 29, pairs changed 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 69, pairs changed 3\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "iter:2 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 55, pairs changed 1\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 12\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 13\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 14\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "iter:14 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 12\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 13\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 14\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 15\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 16\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:16 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 12\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 13\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 14\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 15\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 16\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 17\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 18\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 19\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 20\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 21\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 22\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 23\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 24\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 25\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 26\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 27\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:27 i: 52, pairs changed 1\n",
      "iter:27 i: 54, pairs changed 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:8 i: 52, pairs changed 1\n",
      "iter:8 i: 54, pairs changed 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "iter:2 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "iter:3 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "iter:1 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:3 i: 55, pairs changed 1\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "iter:0 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 12\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 13\n",
      "j not moving enough\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 14\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 15\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 16\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 17\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 18\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 19\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 20\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 21\n",
      "iter:21 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 12\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 13\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 14\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 15\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 16\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 17\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 18\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 19\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 20\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 21\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 22\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:22 i: 55, pairs changed 1\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "iter:2 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "iter:7 i: 52, pairs changed 1\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 12\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 13\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 14\n",
      "iter:14 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:3 i: 55, pairs changed 1\n",
      "iteration number: 0\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "L==H\n",
      "iter:11 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "iter:5 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "iter:4 i: 54, pairs changed 1\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "iter:8 i: 55, pairs changed 1\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 54, pairs changed 1\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "iter:3 i: 52, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "iter:3 i: 54, pairs changed 1\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "iter:9 i: 52, pairs changed 1\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "iter:2 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "iter:5 i: 54, pairs changed 1\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "iter:9 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "iter:0 i: 29, pairs changed 1\n",
      "iter:0 i: 54, pairs changed 2\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "L==H\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "L==H\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "L==H\n",
      "j not moving enough\n",
      "iter:6 i: 52, pairs changed 1\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "L==H\n",
      "iter:1 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:6 i: 54, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:5 i: 52, pairs changed 1\n",
      "iter:5 i: 54, pairs changed 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:9 i: 52, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:6 i: 52, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:6 i: 17, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 12\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 13\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 14\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 15\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 16\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 17\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 18\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 19\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 20\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 21\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 22\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 23\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 24\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:24 i: 55, pairs changed 1\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:11 i: 55, pairs changed 1\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 12\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 13\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 14\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 15\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 16\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 17\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 18\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 19\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 20\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 21\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 22\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 23\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:23 i: 52, pairs changed 1\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:0 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:3 i: 55, pairs changed 1\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 12\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 13\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 14\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 15\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 16\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 17\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 18\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 19\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 20\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 21\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 22\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iter:22 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 12\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 13\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 14\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 15\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 16\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 17\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 18\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 19\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 20\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 21\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 22\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 23\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 24\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 25\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 26\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 27\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 28\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 29\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 30\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 31\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 32\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 33\n",
      "iter:33 i: 52, pairs changed 1\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "iter:2 i: 29, pairs changed 1\n",
      "j not moving enough\n",
      "iter:2 i: 55, pairs changed 2\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "iter:1 i: 52, pairs changed 1\n",
      "j not moving enough\n",
      "iteration number: 0\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 1\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 2\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 3\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 4\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 5\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 6\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 7\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 8\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 9\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 10\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 11\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 12\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 13\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 14\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 15\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 16\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 17\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 18\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 19\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 20\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 21\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 22\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 23\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 24\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 25\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 26\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 27\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 28\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "iteration number: 29\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 30\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 31\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 32\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 33\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 34\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 35\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 36\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 37\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 38\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 39\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "j not moving enough\n",
      "iteration number: 40\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from numpy import mat,multiply\n",
    "def smoSimple(dataMatIn, classLabels, C, toler, maxIter):\n",
    "    dataMatrix, labelMat = mat(dataMatIn), mat(classLabels).transpose()\n",
    "    b = 0\n",
    "    m, n = np.shape(dataMatrix)\n",
    "    alphas = mat(np.zeros((m,1)))\n",
    "    iter = 0\n",
    "    while iter < maxIter:\n",
    "        alphaPairsChanged = 0\n",
    "        for i in range(m):\n",
    "            fXi = float(multiply(alphas, labelMat).T * (dataMatrix*dataMatrix[i,:].T)) + b\n",
    "            Ei = fXi - float(labelMat[i])\n",
    "            #1.如果alpha可以更改，进入优化过程\n",
    "            if (labelMat[i]*Ei < -toler) and (alphas[i] < C) or ((labelMat[i]*Ei > toler) and (alphas[i] > 0)):\n",
    "                #2.随机选择第二个alpha\n",
    "                j = selectJrand(i, m)\n",
    "                fXj = float(multiply(alphas, labelMat).T * (dataMatrix*dataMatrix[j,:].T)) + b\n",
    "                Ej = fXj - float(labelMat[j])\n",
    "                alphaIold = alphas[i].copy()\n",
    "                alphaJold = alphas[j].copy()\n",
    "                #3.保证alpha在0和C之间\n",
    "                if (labelMat[i] != labelMat[j]):\n",
    "                    L = max(0, alphas[j] - alphas[i])\n",
    "                    H = min(C, C + alphas[j] - alphas[i])\n",
    "                else:\n",
    "                    L = max(0, alphas[j] + alphas[i] - C)\n",
    "                    H = min(C, alphas[j] + alphas[i])\n",
    "                if L==H:\n",
    "                    print(\"L==H\")\n",
    "                    continue\n",
    "                eta = 2.0 * dataMatrix[i,:] * dataMatrix[j,:].T - dataMatrix[i,:] * dataMatrix[i,:].T - dataMatrix[j,:]*dataMatrix[j,:].T\n",
    "                if eta >= 0:\n",
    "                    print(\"eta>=0\")\n",
    "                    continue\n",
    "                #4. 对i进行修改，修改量与j相同，但方向相反\n",
    "                alphas[j] -= labelMat[j]*(Ei-Ej)/eta\n",
    "                alphas[j] = clipAlpha(alphas[j], H, L)\n",
    "                if (abs(alphas[j] - alphaJold) < 0.00001):\n",
    "                    print(\"j not moving enough\")\n",
    "                    continue\n",
    "                alphas[i] += labelMat[j]*labelMat[i]*(alphaJold - alphas[j])\n",
    "                b1 = b - Ei - labelMat[i]*(alphas[i]-alphaIold)*dataMatrix[i,:]*dataMatrix[i,:].T - \\\n",
    "                labelMat[j]*(alphas[j]-alphaJold)*dataMatrix[i,:]*dataMatrix[j,:].T\n",
    "                b2 = b - Ej - labelMat[i]*(alphas[i]-alphaIold)*dataMatrix[i]*dataMatrix[j,:].T - \\\n",
    "                labelMat[j]*(alphas[j]-alphaJold)*dataMatrix[j]*dataMatrix[j,:].T\n",
    "                # 5.设置常规项\n",
    "                if 0<alphas[i] and C>alphas[i]:b = b1\n",
    "                elif 0<alphas[j] and C>alphas[j]:b = b2\n",
    "                alphaPairsChanged += 1\n",
    "                print(\"iter:%d i: %d, pairs changed %d\" % (iter, i, alphaPairsChanged))\n",
    "        if alphaPairsChanged == 0: iter += 1\n",
    "        else: iter = 0\n",
    "        print(\"iteration number: %d\" % iter)\n",
    "    return b, alphas\n",
    "dataArr, labelArr = loadDataSet('testSet.txt')\n",
    "b, alphas = smoSimple(dataArr, labelArr, 0.6, 0.001, 40)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "matrix([[-3.79946393]])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1.28978378e-01 2.38457654e-01 1.73472348e-18 3.67436032e-01]]\n",
      "(1, 4)\n"
     ]
    }
   ],
   "source": [
    "print(alphas[alphas>0])\n",
    "print(shape(alphas[alphas>0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[4.658191, 3.507396] -1.0\n",
      "[3.457096, -0.082216] -1.0\n",
      "[2.893743, -1.643468] -1.0\n",
      "[6.080573, 0.418886] 1.0\n"
     ]
    }
   ],
   "source": [
    "#打印支持向量\n",
    "for i in range(100):\n",
    "    if alphas[i]>0.0:\n",
    "        print(dataArr[i],labelArr[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#可视化4个支持向量\n",
    "%matplotlib inline\n",
    "%run EXTRAS/plotRBF.py\n",
    "%run EXTRAS/plotSupportVectors.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
